package bitclub;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import persistencia.PArticulo;

/**
 * @author BIT COMPANY
 */
public abstract class Articulo {

    private int id;
    private String titulo;
    private String genero;
    private int ano;
    private int clasificacionEdad;
    private boolean activo;
    private Date fechaAlta;
    private Date fechaBaja;
    private Proveedor proveedor;
    private Tarifa tarifa;
    private int vecesAlquilada;
    private boolean disponible;

    public Articulo(int id, String titulo, String genero, int ano, int clasificacionEdad, boolean activo, Date fechaAlta, Date fechaBaja, Proveedor proveedor, Tarifa tarifa, int vecesAlquilada, boolean disponible) {
        this.id = id;
        this.titulo = titulo;
        this.genero = genero;
        this.ano = ano;
        this.clasificacionEdad = clasificacionEdad;
        this.activo = activo;
        this.fechaAlta = fechaAlta;
        this.fechaBaja = fechaBaja;
        this.proveedor = proveedor;
        this.tarifa = tarifa;
        this.vecesAlquilada = vecesAlquilada;
        this.disponible = disponible;
    }

    public Articulo(String titulo, String genero, int ano, int clasificacionEdad, boolean activo, Date fechaAlta, Date fechaBaja, Proveedor proveedor, Tarifa tarifa, int vecesAlquilada, boolean disponible) {
        this(-1, titulo, genero, ano, clasificacionEdad, activo, fechaAlta, fechaBaja, proveedor, tarifa, vecesAlquilada, disponible);
    }

    public Articulo() {
    }

    public boolean isActivo() {
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }

    public int getAno() {
        return ano;
    }

    public void setAno(int año) {
        this.ano = año;
    }

    public int getClasificacionEdad() {
        return clasificacionEdad;
    }

    public void setClasificacionEdad(int clasificacionEdad) {
        this.clasificacionEdad = clasificacionEdad;
    }

    public boolean isDisponible() {
        return disponible;
    }

    public void setDisponible(boolean disponible) {
        this.disponible = disponible;
    }

    public Date getFechaAlta() {
        return fechaAlta;
    }

    public void setFechaAlta(Date fechaAlta) {
        this.fechaAlta = fechaAlta;
    }

    public Date getFechaBaja() {
        return fechaBaja;
    }

    public void setFechaBaja(Date fechaBaja) {
        this.fechaBaja = fechaBaja;
    }

    public String getGenero() {
        return genero;
    }

    public void setGenero(String genero) {
        this.genero = genero;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Proveedor getProveedor() {
        return proveedor;
    }

    public void setProveedor(Proveedor proveedor) {
        this.proveedor = proveedor;
    }

    public Tarifa getTarifa() {
        return tarifa;
    }

    public void setTarifa(Tarifa tarifa) {
        this.tarifa = tarifa;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public int getVecesAlquilada() {
        return vecesAlquilada;
    }

    public void setVecesAlquilada(int vecesAlquilada) {
        this.vecesAlquilada = vecesAlquilada;
    }

    /*
     * Metodo que llama a la clase de Persistencia de Película para devolver una
     * lista de películas cuya genero coincida con el introducido por teclado
     */
    public static List<Articulo> seleccionarPorTarifa(Tarifa tarifa) {
        List<Articulo> listArticulo = new ArrayList();
        //Pedimos los artículos que pertenezcan a cierto género
        listArticulo = PArticulo.seleccionarPorTarifaBD(tarifa);
        return listArticulo;
    }
             
    /**
     * Crea un nuevo registro en BD con el objeto Articulo que lo usa
     */
    public abstract void nuevo();

    /**
     * Actualiza los datos en la base de datos del objeto que lo usa
     */
    public abstract void actualizar();

}
